diff --git a/system/libraries/URI.php b/system/libraries/URI.php
index ba6279e..11562eb 100644
--- a/system/libraries/URI.php
+++ b/system/libraries/URI.php
@@ -66,6 +66,25 @@
 	// --------------------------------------------------------------------
 	
 	/**
+	 * Fetch a URI "routed" Segment
+	 *
+	 * This function returns the re-routed URI segment (assuming routing rules are used)
+	 * based on the number provided.  If there is no routing this function returns the
+	 * same result as $this->segment()
+	 *
+	 * @access	public
+	 * @param	integer
+	 * @param	bool
+	 * @return	string
+	 */
+	function rsegment($n, $no_result = FALSE)
+	{
+		return ( ! isset($this->router->rsegments[$n])) ? $no_result : $this->router->rsegments[$n];
+	}
+
+	// --------------------------------------------------------------------
+	
+	/**
 	 * Generate a key value pair from the URI string
 	 *
 	 * This function generates and associative array of URI data starting 
@@ -168,7 +187,6 @@
 		return implode('/', $temp);
 	}
 
-	
 	// --------------------------------------------------------------------
 	
 	/**
@@ -180,6 +198,37 @@
 	 * @return	string
 	 */
 	function slash_segment($n, $where = 'trailing')
+	{
+		return $this->_slash_segment($n, $where, 'segment');
+	}
+
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Fetch a URI Segment and add a trailing slash
+	 *
+	 * @access	public
+	 * @param	integer
+	 * @param	string
+	 * @return	string
+	 */
+	function slash_rsegment($n, $where = 'trailing')
+	{
+		return $this->_slash_segment($n, $where, 'rsegment');
+	}
+	
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Fetch a URI Segment and add a trailing slash - helper function
+	 *
+	 * @access	private
+	 * @param	integer
+	 * @param	string
+	 * @param	string
+	 * @return	string
+	 */
+	function _slash_segment($n, $where = 'trailing', $which = 'segment')
 	{	
 		if ($where == 'trailing')
 		{
@@ -196,7 +245,7 @@
 			$leading	= '/';
 			$trailing	= '/';
 		}
-		return ( ! isset($this->router->segments[$n])) ? '' : $leading.$this->router->segments[$n].$trailing;
+		return ( ! isset($this->router->$which[$n])) ? '' : $leading.$this->router->$which[$n].$trailing;
 	}
 	
 	// --------------------------------------------------------------------
@@ -211,6 +260,19 @@
 	{
 		return $this->router->segments;
 	}
+
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Routed Segment Array
+	 *
+	 * @access	public
+	 * @return	array
+	 */
+	function rsegment_array()
+	{
+		return $this->router->rsegments;
+	}
 	
 	// --------------------------------------------------------------------
 	
@@ -224,6 +286,19 @@
 	{
 		return count($this->router->segments);
 	}
+
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Total number of routed segments
+	 *
+	 * @access	public
+	 * @return	integer
+	 */
+	function total_rsegments()
+	{
+		return count($this->router->rsegments);
+	}
 	
 	// --------------------------------------------------------------------
 	
@@ -238,6 +313,20 @@
 		return $this->router->uri_string;
 	}
 
+	
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Fetch the entire Re-routed URI string
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function uri_rstring()
+	{
+		return '/'.implode('/', $this->rsegment_array()).'/';
+	}
+
 }
 // END URI Class
 ?>
\ No newline at end of file
